<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8" />
		<title>1.Object.defineProperty</title>
	</head>
	<body>
		<!-- 
				复习Object.defineProperty
					作用：给指定的对象添加属性，且可以进行“高级定制”
					配置项如下：
							// value:18, //指定属性的值
							// enumerable:true, //标识属性是否可枚举，默认值是false
							// writable:true, //标识属性是否可被修改，默认值是false
							// configurable:true,//标识属性是否可被删除，默认值是false
							// get(){}
							// set(){}
		 -->
		<script type="text/javascript" >
			let number = 18

			let person = {
				name:'强哥',
				gender:'男',
			}

			//给person添加指定属性，且可以进行“高级定制”
			Object.defineProperty(person,'age',{
				// value:18,//指定属性的值
				// enumerable:true, //标识属性是否可以枚举，默认值为false
				// writable:true, //标识属性是否可以被修改，默认值为false
				// configurable:true, //标识属性是否可以被删除，默认值为false

				/* 
					1.get函数（getter）何时调用？—— 有人访问person的age属性时调用
					2.get函数（getter）的返回值，就作为当前属性的值
					3.get函数（getter）中的this是谁？—— 是当前对象
				*/
				get(){
					// console.log(this)//此处的this是当前对象
					// console.log('get函数被调用了')
					return number
				},

				/* 
					1.set函数（setter）何时调用？—— 有人修改person的age属性时调用
					2.set函数（setter）收到的参数是修改后的新值
					3.set函数（setter）中的this是谁？—— 是当前对象
				*/
				set(val){
					// console.log(this)//此处的this是当前对象
					// console.log('set函数被调用了')
					number = val
				}
			})
		</script>
	</body>
</html>